from common.BasePages import BasePage


class AlarmRule(BasePage):
    # 组态管理
    def alarm_rule_url(self):
        self.goto_url("alarmManagement/alarmRules")

    def create_general_alarm(self):
        """
        # 新增普通报警
        :return:
        """
        self.page.get_by_role("button", name="新增").click()
        self.page.get_by_role("dialog", name="新建报警规则").get_by_placeholder("请输入规则名称").click()
        self.page.get_by_role("dialog", name="新建报警规则").get_by_placeholder("请输入规则名称").fill("张院龙普通规则")
        self.page.get_by_role("button", name="选择参数").click()
        self.page.get_by_role("row", name="所属项目 网关名称 设备名称 参数名称 地址 数据类型 点位标识").locator(
            "span").nth(
            1).click()
        self.page.get_by_label("选择参数").get_by_role("button", name="确 定").click()
        self.page.get_by_role("textbox", name="选择操作符").click()
        self.page.get_by_role("listitem").filter(has_text="不等于").click()
        self.page.get_by_role("textbox", name="输入触发值").click()
        self.page.get_by_role("textbox", name="输入触发值").fill("1")
        self.page.get_by_role("button", name="选择推送人").click()
        self.page.get_by_role("row", name="序号 姓名 账号 联系方式 邮箱 组织").locator("span").nth(1).click()
        self.page.get_by_role("button", name="确定").click()
        self.page.get_by_role("textbox", name="选择推送方式").click()
        self.page.get_by_role("listitem").filter(has_text="邮件").click()
        self.page.get_by_role("textbox", name="开始时间").click()
        self.page.locator("span:nth-child(3) > .el-input__suffix-inner > .el-input__icon").first.click()
        self.page.get_by_role("textbox", name="结束时间").click()
        self.page.locator("div:nth-child(7) > .el-input__suffix > .el-input__suffix-inner > .el-input__icon").click()
        self.page.get_by_role("button", name="确 定").click()
        self.page.get_by_text("操作成功").click()

    def create_advanced_alarm(self):
        """
        # 新增高级报警
        :return:
        """
        self.page.get_by_role("button", name="新增").click()
        self.page.get_by_role("dialog", name="新建报警规则").get_by_placeholder("请输入规则名称").click()
        self.page.get_by_role("dialog", name="新建报警规则").get_by_placeholder("请输入规则名称").fill("高级报警规则")
        self.page.get_by_role("radio", name="高级规则").click()
        self.page.get_by_role("button", name="选择变量").click()
        self.page.get_by_role("row", name="所属项目 网关名称 设备名称 参数名称 地址 数据类型 点位标识").locator(
            "span").nth(
            1).click()
        self.page.get_by_role("button", name="确 定").nth(1).click()
        self.page.get_by_placeholder("请输入值").click()
        self.page.get_by_placeholder("请输入值").fill("1")
        self.page.get_by_role("tab", name="报警推送").click()
        self.page.get_by_role("button", name=" 添加报警推送").click()
        self.page.get_by_role("button", name="选择推送人").click()
        self.page.get_by_role("row", name="序号 姓名 账号 联系方式 邮箱 组织").locator("span").nth(1).click()
        self.page.get_by_role("button", name="确定").click()
        self.page.get_by_role("textbox", name="请选择", exact=True).nth(2).click()
        self.page.get_by_role("listitem").filter(has_text="邮箱").click()
        self.page.get_by_role("textbox", name="选择时间").first.click()
        self.page.locator("span:nth-child(3) > .el-input__suffix-inner > .el-input__icon").first.click()
        self.page.get_by_role("textbox", name="选择时间").nth(1).click()
        self.page.locator("div:nth-child(4) > .el-input__suffix > .el-input__suffix-inner > .el-input__icon").click()
        self.page.get_by_role("button", name="确 定").click()
        self.assert_alert_content("操作成功")

    def edit_alarm_rule(self):
        self.page.get_by_role("cell", name="张院龙组态 ").locator("i").click()
        self.page.get_by_role("textbox", name="请输入名称，40字内").fill("张院龙组态2")
        self.page.get_by_role("button", name="确 定").click()
        self.page.get_by_text("编辑组态成功").click()
        with self.page.expect_popup() as page2_info:
            self.page.get_by_role("row", name="  ", exact=True).locator("i").first.click()
        page2 = page2_info.value
        page2.get_by_role("button", name=" 发布").click()
        self.assert_alert_content("发布成功！")

    def delete_alarm_rule(self):
        self.page.get_by_role("row", name="  ", exact=True).locator("i").nth(1).click()
        self.page.get_by_role("button", name="确定").click()
        self.assert_alert_content("删除成功!")

    def set_alarm_rule(self):
        response = self.cat_url(self.page.get_by_role("button", name=" 查询"), "EventsRecordInfo")  # 获取接口响应的结果。
        assert response['Data']['Items'][0]['GatewaySN'] == "30100B14165BCC38" and response['Data']['Items'][0][
            'AlarmType'] == "上线", "失败"
